# FROM 基于 golang:1.16-alpine
FROM golang:1.16-alpine AS builder

# ENV 设置环境变量
ENV GOPATH=/go/src
ENV GO111MODULE=on
ENV CGO_ENABLED 0
ENV GOOS linux
ENV GOPROXY https://goproxy.cn,direct

# 声明工作目录
WORKDIR $GOPATH/gino

# 拷贝整个项目到工作目录
COPY . .

# 编译项目文件
RUN go build -ldflags="-s -w" -o $GOPATH/gino/main ./main.go

# FROM 基于 alpine:latest
FROM alpine:latest

# RUN 设置代理镜像
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 更新镜像源
RUN apk update

# RUN 设置 Asia/Shanghai 时区
RUN apk --no-cache add tzdata && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone

# 镜像编写者及邮箱
LABEL MAINTAINER="xxx@xx.com"

# 声明工作目录
WORKDIR $GOPATH/gino

# 拷贝/go/src/joy文件夹下文件到当前工作目录
COPY --from=builder $GOPATH/gino/main ./main

# 声明容器的服务端口（仅仅是声明）
EXPOSE 8002

# 运行打包好的二进制
CMD ["./main"]
